# -*- coding: utf-8 -*-
# $Id: hints.py 24 2009-02-15 03:02:57Z gkuznets $

# Copyright 2008, 2009 Grigoriy Kuznetsov (gkuznets@yandex.ru)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from PyQt4.QtCore import QTime, SIGNAL
from PyQt4.QtGui import QListWidget, QListWidgetItem

from core.batch import *
from checkup import Checkup
checkup = Checkup.instance()

class Hints(QListWidget):
    """Окно подсказок"""
  
    def __init__(self):
        QListWidget.__init__(self)
  
    def generate(self):
        """Функция, собственно, генерирующая подсказки"""
        current_time = QTime.currentTime()
        # Чистим старые подсказки
        self.clear()
    
        # Пробегаем по всем пачкам
        for b in Batch.all():
            # Если какая-то засиделась больше положенного времени на проверке,
            # то выдаем об этом подсказку
            b.lazy = False
            if b.group != None:
                if b.current_time.secsTo(current_time) > b.group.max_check_time:
                    b.lazy = True
                    self.emit(SIGNAL("groupChanged"), b.group.index)
                    item = QListWidgetItem((u"Пачка %s находится на проверке задачи %d слишком долго!" % (b.name(), b.group.index+1)))
                    self.addItem(item)
        
          # Ищем пачки в которых осталась одна непроверенная задача на данной проверке
        b.one_problem_left = False
        if b.group is None:
            for c in [0, 1]: # Цикл по проверкам
                pcount = 0
                pindex = 0
                for p in range(checkup.problems_count):
                    if p in b.checkedProblems(c): pcount += 1
                    else: pindex = p # Запоминаем номер последней непроверенной задачи
                if pcount == checkup.problems_count - 1:
                    b.one_problem_left = True
                    item = QListWidgetItem((u"В пачке %s осталась одна непроверенная задача %d! (%d проверка)" % (b.name(), pindex+1, c+1)))
                    self.addItem(item)